import scrapy
import re
from ..items import *
# DoubanSpider 爬虫类 继承了 scrapy.Spider的类
class DoubanSpider(scrapy.Spider):
    # 爬虫名字
    name = 'douban'
    # 允许爬取的域名   为了防止爬到其他的网站   不仅仅只有xx.com 还有xx.net xx.cn
    allowed_domains = ['douban.com']
    # 起始的url
    start_urls = ['https://movie.douban.com/top250']
    # 注意不要随意更改parse方法名字     response向起始的url 发送请求返回的响应对象
    def parse(self, response):
        # 数据提取方式
        # 1.直接通过response对象进行数据清洗 ，需要进行xpath提取的数据  （不需要进行element转换）
        # response.xpath("语法").get()
        # 如果需要进行 多个数据提取 需要用到getall() 如果需要单个数据提取需要用到 get()方法
        # 2正则 需要加上 response.text(str)   re.findall(语法,response.text)
        # 实例  xpath提取数据
        title=response.xpath('//*[@id="content"]/div/div[1]/ol/li[1]/div/div[2]/div[1]/a/span[1]/text()').get()
        # 实例  正则提取数据  返回的是列表    不用get 或者getall
        contents=re.findall('<span class="inq">(.*?)</span>',response.text)[0]
        data=response.text
        print(data)
#       数据保存 是放到pipelines.py操作
#         通过Douban250Item 类实例化一个item对象
#         作用  以键值对的形式存储我们要保存的数据字段
        item=Douban250Item()
        # 重点  item的键必须是items.py声明的字段
        item["title"]=title
        item["contents"]=contents
        # item载体 对象装满了数据 数据的传递 直接传递到pipelines.py里面 的def process_item(self, item, spider)方法里面的 item形参
        return item
